home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok49 / display.write_bug / liesmich next >
Text File  |  1993-11-04  |  2KB  |  57 lines

  1.  
  2.                   Ein Bug im OBERON-Modul Display
  3.                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4.                  Oberon Compiler V1.17.1 03-Oct-90
  5.                     Display.mod Date: 16-Jun-90
  6.  
  7.  
  8.       Die Prozedur Display.Write hat einen Fehler, der zu
  9.       wunderschönen GURUs führen kann.
  10.  
  11.       Dies zeigt, wie nützlich die Beigabe der Quelltexte zu den
  12.       Moduln des Compilers ist: kleinere Fehler kann man schnell
  13.       selbst reparieren.
  14.  
  15.       Das Programm "writebug" führt den Fehler vor:
  16.       Es importiert die Prozedur Write einmal aus dem Original-Modul
  17.       Display und einmal aus dem korrigierten Modul, das ich für
  18.       dieses Demo-Programm NDisplay genannt habe.
  19.  
  20.       Zuerst wird NDisplay.Write einigemale ausgeführt, dann dasselbe
  21.       mit dem original Display.Write, und der Amiga stürzt ab!
  22.  
  23.       Korrektur:
  24.       =========
  25.           Da das Modul Display nicht PD ist, kann wohl auch die
  26.           korrigierte Version nicht auf PD veröffentlicht werden.
  27.           Wer die Vollverion des Compilers gekauft hat, kann den
  28.           Fehler aber selbst beheben.
  29.           Die Prozedur Write befindet sich am Ende des Quelltextes.
  30.           Sie lautet auszugsweise, mit der eingefügten Korrektur:
  31.  
  32.               IF len+d.curX>d.txtWidth THEN
  33.                 IF d.curX=d.txtWidth THEN WriteLn(d);
  34.  
  35.              (* eingefügt: *)
  36.                 IF len<d.txtWidth THEN max:=len ELSE max:=d.txtWidth END;
  37.              (* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *)
  38.  
  39.                 ELSE
  40.                   max := d.txtWidth-d.curX;
  41.                 END;
  42.               END;
  43.  
  44.  
  45.           Nach der Änderung im Quelltext muß nur noch das Modul einmal mit
  46.           der Option -md und einmal ohne compiliert werden, und alles
  47.           funktioniert wieder.
  48.  
  49.           Viel Spaß!
  50.  
  51.           Franz Dimbeck
  52.           Troppauerstr. 48
  53.           D-8058 Erding
  54.           Tel.: 08122 18135
  55.  
  56.  
  57.